home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / fb386smp / fs / fs.bas < prev    next >
BASIC Source File  |  1994-09-20  |  11KB  |  296 lines

  1. 1000 '================================================================
  2. 1010 '         âtâ@âCâïâZâîâNâ^
  3. 1020 '================================================================
  4. 1030 CLEAR ,,,,1024:LOADM "DOS.REX",0
  5. 1040 CLS
  6. 1050 GOSUB *F_Åëè·ë╗
  7. 1060 F_POSX=10:F_POSY=5:GOSUB *F_âtâ@âCâïâZâîâNâ^
  8. 1070 CLS
  9. 1080 PRINT "ĵô╛é╡é╜âhâëâCâuû╝:";F_FILEDRV$
  10. 1090 PRINT "ĵô╛é╡é╜âpâXû╝    :";F_FILEPATH$
  11. 1100 PRINT "ĵô╛é╡é╜âtâ@âCâïû╝:";F_FILENAME$
  12. 1110 END
  13. 1120 '----------------------------------------------------------------
  14. 1130 *F_Åëè·ë╗
  15. 1140 '----------------------------------------------------------------
  16. 1150  DEFLNG F
  17. 1160  SEACHICNSEL&=0:MEMCPY&=5   :GETFREESPACE&=10:ISFIXED&=15:ISEXIST&=20
  18. 1170  FINDFIRST&=25 :FINDNEXT&=30:GETDRV&=35      :GETDIR&=40
  19. 1180 '
  20. 1190  DIM F_DRV(26)  ,F_NAME$(0) ,F_SIZE&(0) ,F_ATTR&(0),F_DATE$(0)
  21. 1200  DIM F_BTNX1(18),F_BTNY1(18),F_BTNX2(18),F_BTNY2(18)
  22. 1210  DIM F_ICN(9),F_PAT(((24*24/8)+3)/4+1)
  23. 1220 '
  24. 1230  F_NUM=0:F_WLD$="":F_STR$=SPACE$(100)
  25. 1240  F_ICN_SEC=CALLM(SEACHICNSEL&)
  26. 1250 '
  27. 1260  RESTORE *F_â{â^âôê╩Æuâfü[â^
  28. 1270  FOR F_I=0 TO 9
  29. 1280   READ F_BTNX1(F_I),F_BTNY1(F_I),F_BTNX2(F_I),F_BTNY2(F_I)
  30. 1290  NEXT
  31. 1300  FOR F_I=10 TO 17
  32. 1310   F_BTNX1(F_I)=F_BTNX1(9):F_BTNX2(F_I)=F_BTNX2(9)
  33. 1320   F_BTNY1(F_I)=F_BTNY1(F_I-1)+1:F_BTNY2(F_I)=F_BTNY2(F_I-1)+1
  34. 1330  NEXT
  35. 1340 '
  36. 1350 RESTORE *F_âAâCâRâôâfü[â^:FOR F_I=0 TO 9:READ F_ICN(F_I):NEXT
  37. 1360 RETURN
  38. 1370 '
  39. 1380 *F_â{â^âôê╩Æuâfü[â^
  40. 1390  DATA  0, 1, 2, 1,  3, 1, 5, 1,  6, 1, 8, 1, 33, 1,46, 1
  41. 1400  DATA 48, 9,49, 9, 48,10,49,10, 36,11,41,11, 44,11,49,11
  42. 1410  DATA 11,11,24,11, 10, 2,46, 2
  43. 1420 *F_âAâCâRâôâfü[â^
  44. 1430 DATA 70,0,72,77,0,77,76,78,69,79
  45. 1440 '
  46. 1450 '----------------------------------------------------------------
  47. 1460 *F_âtâ@âCâïâZâîâNâ^
  48. 1470 '----------------------------------------------------------------
  49. 1480  F_FILENAME$="":F_FILEPATH$="":F_FILEDRV$="":F_TOP=0
  50. 1490  GOSUB *F_ëµû╩ò\Ī
  51. 1500  GOSUB *F_âhâëâCâuÅεò±Äµô╛:GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
  52. 1510  GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
  53. 1520  MOUSE 0:MOUSE 1,0,0,1
  54. 1530 *F_LOOP
  55. 1540  GOSUB *F_â}âEâXâ{â^âôâ`âFâbâN
  56. 1550  ON F_BTN+1 GOTO 1660,1730,1780,1840,1880,1910,1940,2000,2020
  57. 1560 '---âèâXâg
  58. 1570  F_I=F_TOP+F_BTN-8:IF F_I>F_NUM GOTO *F_LOOP
  59. 1580  IF F_ATTR&(F_I) = &H10 THEN
  60. 1590    F_CMD$="cd "+F_NAME$(F_I):SHELL F_CMD$:GOTO 1730
  61. 1600  ELSE
  62. 1610    F_FILENAME$=LEFT$(F_NAME$(F_I)+SPACE$(14),12)
  63. 1620    LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
  64. 1630  ENDIF
  65. 1640  GOTO *F_LOOP
  66. 1650 '---<
  67. 1660  IF F_DRV(0)-1<>0 THEN F_DRV(0)=F_DRV(0)-1 ELSE F_DRV(0)=26
  68. 1670  IF F_DRV(F_DRV(0))<0 THEN 1660
  69. 1680  LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
  70. 1690  F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
  71. 1700  WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
  72. 1710  IF F_BTN_ATR=0 THEN 1730 ELSE *F_LOOP
  73. 1720 '---A
  74. 1730  F_CMD$=CHR$(&H40+F_DRV(0))+":":SHELL F_CMD$
  75. 1740  GOSUB *F_âhâëâCâuÅ≤ï╡ò\Ī
  76. 1750  F_TOP=0:GOSUB *F_âtâ@âCâïÅεò±Äµô╛:GOSUB *F_âtâ@âCâïû╝ò\Ī
  77. 1760  GOTO *F_LOOP
  78. 1770 '--->
  79. 1780  IF F_DRV(0)+1<>27 THEN F_DRV(0)=F_DRV(0)+1 ELSE F_DRV(0)=1
  80. 1790  IF F_DRV(F_DRV(0))<0 THEN 1780
  81. 1800  LOCATE F_POSX+4,F_POSY+1:PRINT AKCNV$(CHR$((F_DRV(0)+&H40)));
  82. 1810  F_BTN_ATR=MOUSE(3,0):F_BTN_ATR=0:F_I=0
  83. 1820  WHILE F_BTN_ATR=0 AND F_I<130:F_I=F_I+1:F_BTN_ATR=MOUSE(3,0):WAIT 1:WEND
  84. 1830  IF F_BTN_ATR=0 THEN 1730 ELSE *F_LOOP
  85. 1840 '---Ée
  86. 1850  SHELL "cd .."
  87. 1860  GOTO 1730
  88. 1870 '---ü¬
  89. 1880  IF F_TOP<>0 THEN F_TOP=F_TOP-1:GOSUB *F_âtâ@âCâïû╝ò\Ī
  90. 1890  GOTO *F_LOOP
  91. 1900 '---ü½
  92. 1910  IF F_TOP<F_NUM-10 THEN F_TOP=F_TOP+1:GOSUB *F_âtâ@âCâïû╝ò\Ī
  93. 1920  GOTO *F_LOOP
  94. 1930 '---Ä└ìs
  95. 1940  IF F_FILENAME$="" THEN *F_LOOP
  96. 1950  CALLM GETDIR&,0,VARPTR(F_STR$)
  97. 1960  F_FILEPATH$="\"+LEFT$(F_STR$,INSTR(F_STR$,CHR$(0)))
  98. 1970  F_FILEDRV$=CHR$(&H40+F_DRV(0))
  99. 1980  GOTO *F_BYE
  100. 1990 '---ĵÅ┴
  101. 2000  F_FILENAME$="":F_FILEPATH$="":GOTO *F_BYE
  102. 2010 '---ò╢ÄÜ
  103. 2020  LOCATE F_POSX+12,F_POSY+11:PRINT SPACE$(12)
  104. 2030  LOCATE F_POSX+12,F_POSY+11:LINE INPUT"",F_FILENAME$
  105. 2040  F_FILENAME$=LEFT$(F_FILENAME$+SPACE$(12),12)
  106. 2050  LOCATE F_POSX+11,F_POSY+11:PRINT "["+F_FILENAME$+"]"
  107. 2060  GOTO *F_LOOP
  108. 2070 *F_BYE
  109. 2080 RETURN
  110. 2090 '----------------------------------------------------------------
  111. 2100 *F_â}âEâXâ{â^âôâ`âFâbâN
  112. 2110 '----------------------------------------------------------------
  113. 2120  F_BTN=-1:F_BTN_ATR=0
  114. 2130  WHILE F_BTN=-1
  115. 2140   WHILE MOUSE(2,0)=0:WEND:F_X=MOUSE(0):F_Y=MOUSE(1)
  116. 2150   F_I=0
  117. 2160   WHILE F_I<=17 AND F_BTN=-1
  118. 2170    F_X1=(F_POSX+F_BTNX1(F_I))*8:F_X2=(F_POSX+F_BTNX2(F_I))*8+7
  119. 2180    F_Y1=(F_POSY+F_BTNY1(F_I))*19:F_Y2=(F_POSY+F_BTNY2(F_I))*19+18
  120. 2190    IF F_X1<=F_X AND F_X2>=F_X AND F_Y1<=F_Y AND F_Y2>=F_Y THEN
  121. 2200      LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
  122. 2210      IF F_I<>4 AND F_I<>5 THEN WHILE MOUSE(2,0) OR MOUSE(2,1):WEND
  123. 2220      LINE(F_X1,F_Y1)-(F_X2,F_Y2),XOR,7,BF
  124. 2230      F_BTN=F_I
  125. 2240    ENDIF
  126. 2250    F_I=F_I+1
  127. 2260   WEND
  128. 2270  WEND
  129. 2280  IF F_BTN<>4 AND F_BTN<>5 THEN F_BTN_ATR=MOUSE(3,0):WAIT 20:F_BTN_ATR=MOUSE(3,0)
  130. 2290 RETURN
  131. 2300 '-----------------------------
  132. 2310 *F_ëµû╩ò\Ī
  133. 2320 '-----------------------------
  134. 2330  LINE((F_POSX)*8,(F_POSY)*19)-((F_POSX+52)*8,(F_POSY+13)*19),PSET,%8,BF
  135. 2340  LINE((F_POSX+10)*8,(F_POSY+2)*19)-((F_POSX+48)*8,(F_POSY+11)*19),PSET,%7,B
  136. 2350  LOCATE F_POSX+48,F_POSY+ 9:PRINT "ü¬"
  137. 2360  LOCATE F_POSX+48,F_POSY+10:PRINT "ü½"
  138. 2370  LOCATE F_POSX+33,F_POSY+ 1:PRINT "ÉeâfâBâîâNâgâè"
  139. 2380  LOCATE F_POSX+11,F_POSY+11:PRINT "[            ]"
  140. 2390  LOCATE F_POSX+36,F_POSY+11:PRINT "[Ä└ìs]  [ĵÅ┴]"
  141. 2400 RETURN
  142. 2410 '-----------------------------
  143. 2420 *F_âhâëâCâuÅ≤ï╡ò\Ī
  144. 2430 '-----------------------------
  145. 2440  LOCATE F_POSX+1,F_POSY+1:PRINT "üâ ";AKCNV$(CHR$((F_DRV(0)+&H40)));" üä"
  146. 2450  F_FREE=CALLM(GETFREESPACE&,0)
  147. 2460  LOCATE F_POSX,F_POSY+3
  148. 2470  IF F_FREE<0 THEN PRINT "ü@ö±ÅÇö⌡"
  149. 2480  IF F_FREE>=0   AND F_FREE<1024 THEN PRINT USING "###### B";F_FREE
  150. 2490  IF F_FREE>1024 AND F_FREE<1024*1024 THEN PRINT USING "####.#KB";F_FREE/1024
  151. 2500  IF F_FREE>1024*1024 THEN PRINT USING "####.#MB";F_FREE/1024/1024
  152. 2510  FOR F_I=1 TO 9:LOCATE F_POSX+10,F_POSY+F_I+1:PRINT SPACE$(37);:NEXT
  153. 2520 '
  154. 2530  CALLM GETDIR&,0,VARPTR(F_STR$)
  155. 2540  F_I=INSTR(F_STR$,CHR$(0)):F_J=F_I
  156. 2550  WHILE F_I>1 AND MID$(F_STR$,F_I,1)<>"\":F_I=F_I-1:WEND
  157. 2560  LOCATE F_POSX+11,F_POSY+1
  158. 2570  PRINT "["+LEFT$(MID$(F_STR$,F_I,F_J-F_I)+SPACE$(13),12)+"]"
  159. 2580 '
  160. 2590  LINE((F_POSX+3)*8,(F_POSY+4)*19)-((F_POSX+3)*8+23,(F_POSY+4)*19+23),PSET,%8,BF
  161. 2600  IF F_FREE>=0 THEN
  162. 2610    CALLM MEMCPY&,&H14,VARPTR(F_PAT(0)),F_ICN_SEC,16+F_ICN(F_DRV(F_DRV(0)))*24*24/4,24*24/8
  163. 2620    PUT@((F_POSX+3)*8,(F_POSY+4)*19)-((F_POSX+3)*8+23,(F_POSY+4)*19+23),F_PAT,,7
  164. 2630  ENDIF
  165. 2640 RETURN
  166. 2650 '-----------------------------
  167. 2660 *F_âtâ@âCâïû╝ò\Ī
  168. 2670 '-----------------------------
  169. 2680  F_I=1
  170. 2690  WHILE F_I<=9 AND F_I+F_TOP<F_NUM
  171. 2700   LOCATE F_POSX+10,F_POSY+F_I+1
  172. 2710   IF F_ATTR&(F_I+F_TOP)=&H10 THEN
  173. 2720    PRINT "<";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(20),12);">";
  174. 2730    PRINT SPACE$(8)+F_DATE$(F_I+F_TOP)
  175. 2740   ELSE
  176. 2750    PRINT " ";LEFT$(F_NAME$(F_I+F_TOP)+SPACE$(14),12);
  177. 2760    PRINT " ";RIGHT$(SPACE$(14)+STR$(F_SIZE&(F_I+F_TOP)),8);
  178. 2770    PRINT F_DATE$(F_I+F_TOP)
  179. 2780  ENDIF
  180. 2790  F_I=F_I+1
  181. 2800  WEND
  182. 2810 RETURN
  183. 2820 '-----------------------------
  184. 2830 *F_âhâëâCâuÅεò±Äµô╛
  185. 2840 '-----------------------------
  186. 2850  FOR F_I=1 TO 26:F_DRV(F_I)=CALLM(ISEXIST&,F_I):NEXT
  187. 2860 FOR F_I=1 TO 16
  188. 2870  F_DRV(F_I)=CALLM(ISEXIST&,F_I)
  189. 2880  IF F_DRV(F_I)>=0 THEN
  190. 2890    F_DRV(F_I)=INP(&H31D8+F_I*4,1):F_J=CALLM(ISFIXED&,F_I)
  191. 2900    IF F_DRV(F_I)=2 AND F_J=0 THEN F_DRV(F_I)=6
  192. 2910    IF F_DRV(F_I)=255 AND F_J=0 THEN F_DRV(F_I)=7
  193. 2920    IF F_DRV(F_I)=255 THEN F_DRV(F_I)=2
  194. 2930  ENDIF
  195. 2940 NEXT
  196. 2950 F_DRV(17)=8
  197. 2960 FOR F_I=18 TO 26
  198. 2970  IF F_DRV(F_I)>=0 THEN F_DRV(F_I)=9
  199. 2980 NEXT
  200. 2990  F_DRV(0)=CALLM(GETDRV&,VARPTR(F_STR$))
  201. 3000 RETURN
  202. 3010 '-----------------------------
  203. 3020 *F_âtâ@âCâïÅεò±Äµô╛
  204. 3030 '-----------------------------
  205. 3040  F_NUM=0:F_WLD$="*.*"+CHR$(0)
  206. 3050  F_I=CALLM(FINDFIRST&,VAR